#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
GUSHI项目TTS功能演示脚本
展示如何使用TTS模块生成古诗词朗读示范
"""

import os
import json
import requests
import tts_service

def demo_tts_local():
    """
    演示本地直接调用TTS服务
    """
    print("=== 本地TTS服务演示 ===")
    
    # 注意：这里需要您先配置真实的阿里云密钥
    try:
        tts = tts_service.get_tts_service(
            provider="aliyun",
            access_key_id="YOUR_ACCESS_KEY_ID",
            access_key_secret="YOUR_ACCESS_KEY_SECRET", 
            app_key="YOUR_APP_KEY"
        )
        
        # 测试古诗词
        poem = "床前明月光，疑是地上霜。举头望明月，低头思故乡。"
        
        print(f"正在为以下诗词生成朗读示范：")
        print(f'"{poem}"')
        
        # 生成音频
        audio_path = tts.generate_speech(
            text=poem,
            use_ssml=True  # 使用SSML优化朗读效果
        )
        
        print(f"朗读示范已生成: {audio_path}")        
        print("您可以使用音频播放器播放此文件。")
        
    except Exception as e:
        print(f"TTS演示失败: {e}")
        print("请先配置正确的阿里云TTS服务密钥。")

def demo_tts_api():
    """
    演示通过API调用TTS服务
    """
    print("\n=== API TTS服务演示 ===")
    
    # API端点（假设服务运行在5002端口）
    api_url = "http://127.0.0.1:5002/generate_demo"
    
    # 请求数据
    request_data = {
        "text": "春眠不觉晓，处处闻啼鸟。夜来风雨声，花落知多少。",
        "voice": "zhixiaoxia",  # 知性女声
        "use_ssml": True
    }
    
    try:
        print(f"正在向API发送TTS请求...")
        print(f"请求内容: {json.dumps(request_data, ensure_ascii=False, indent=2)}")
        
        response = requests.post(api_url, json=request_data, timeout=30)
        
        if response.status_code == 200:
            result = response.json()
            print("TTS生成成功！")
            print(f"使用音色: {result['voice_used']}")
            print(f"音频格式: {result['format']}")
            print("音频数据已以base64格式返回，可以保存为文件播放。")
            
        elif response.status_code == 501:
            result = response.json()
            print("TTS服务未配置:")
            print(json.dumps(result, ensure_ascii=False, indent=2))
            
        else:
            print(f"API请求失败，状态码: {response.status_code}")
            print(f"错误信息: {response.text}")
            
    except requests.exceptions.ConnectionError:
        print("无法连接到API服务。请确保GUSHI服务正在5002端口运行。")
        print("启动命令: uvicorn GUSHI.gushi_fastapi_app:app --host 0.0.0.0 --port 5002")
    except Exception as e:
        print(f"API演示失败: {e}")

def show_ssml_example():
    """
    展示SSML优化效果的示例
    """
    print("\n=== SSML优化效果演示 ===")
    
    original_text = "床前明月光疑是地上霜举头望明月低头思故乡"
    
    # 创建临时TTS服务实例来展示SSML处理
    tts = tts_service.AliyunTTSService("", "", "")  # 空参数，仅用于演示SSML处理
    ssml_text = tts._add_ssml_for_poetry(original_text)
    
    print("原始文本:")
    print(f'"{original_text}"')
    print("\n经过SSML优化后的文本:")
    print(ssml_text)
    print("\n说明:")
    print("- <break time='200ms'/> 表示短停顿，用于字与字之间的节奏")
    print("- <break time='500ms'/> 表示中等停顿，用于诗句内部的换气")  
    print("- <break time='800ms'/> 表示较长停顿，用于诗句之间的分隔")
    print("这样的处理让TTS朗读更有节奏感和韵律美。")

def show_voice_options():
    """
    展示可用的音色选项
    """
    print("\n=== 推荐音色选项 ===")
    
    voices = {
        "zhixiaoxia": "知性女声 - 适合诗词朗读，声音清晰温和",
        "zhilingf": "知性女声F - 略带磁性，适合现代诗词",
        "zhishuo": "知性男声 - 沉稳大气，适合豪放派诗词",
        "zhistella": "知性女声Stella - 年轻活泼，适合儿童诗词"
    }
    
    print("古诗词朗读推荐音色:")
    for voice_id, description in voices.items():
        print(f"  {voice_id}: {description}")
    
    print("\n使用方法:")
    print("在API请求中指定 'voice' 参数，例如:")
    print('{"text": "静夜思", "voice": "zhixiaoxia", "use_ssml": true}')

if __name__ == "__main__":
    print("GUSHI项目 - 古诗词TTS朗读示范功能演示")
    print("=" * 50)
    
    # 展示SSML优化效果
    show_ssml_example()
    
    # 展示音色选项
    show_voice_options()
    
    # 演示API调用（这个不需要真实的密钥）
    demo_tts_api()
    
    # 本地TTS演示（需要真实密钥才能工作）
    print("\n注意：本地TTS演示需要配置真实的阿里云密钥才能运行。")
    print("请参考 GUSHI/config.example.py 文件了解如何配置。")
    
    print("\n演示完成！") 